型チェック 速度改善 奮闘記 | TSKaigi Kansai
スピーカー
テックタッチ株式会社
アプリケーションの概観
Nxを使ったモノレポ
100近くの内部パッケージが1つのリポジトリで管理されている
課題
プロダクトが成長していくにつれて、TypeScriptの型チェックに時間がかかるという声がチーム内で上がってくるように
VSCodeが重くなったら restart ts-server
改善結果
27%〜48%改善
改善の要因
Redux Toolkit関連の型推論(インパクトが一番大きい)
ExtractによるInstantiation
不要なスキーマ定義
RTK
各reducerの引数にあるstateについて、initialStateの型を元に推論される部分に時間がかかっていた
initialStateの型を名前をつけて外に取り出すとキャッシュが効くようになって速くなった
Naming Complex Typesのパターン
Extract
引数で受け取ったtype(リテラル型のユニオン)を元にExtractした型を返却
関数オーバーロードを利用してExtractを排除
コード量が増えるし汎用性も失われる
トレードオフを許容できるなら採用可能
不要なschema
zodのinferで型を得ていたところをTSで型定義するように
不要な型がチェック
型チェックの必要があるファイルだけチェックの対象にする
これからの課題
ドメインのコアに複雑な型がある
tscはキャッシュが効くが、VSCode上でのチェックは効かない
調査プロセス
traceを出力
解析ツールに入力
Speedscopeがおすすめ
遅いファイルとそのpositionを特定
ASTを走査してコードを特定